#!/bin/bash

# This shell-script will install the latest version of
# nfcollector to your system & has some system requirements including
# docker, docker-compose, wget. If not satisfied, will help you install
# them using a guide printed in the terminal
# Check more about it's usage at: https://github.com/javadmohebbi/goNfCollector

# The version: v0.0.1-30b
# BETA VERSION
# Author: M. Javad Mohebi
# Github: https://github.com/javadmohebbi
# Dockerhub: https://hub.docker.com/u/javadmohebbi
# Website: https://openintelligence24.com

# change the color of echo output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
NC='\033[0m' # No Color

COMPOSE_PROJECT_NAME="oi24"

# RANDOM QUERY STRING FOR PREVENTING CACHE
RAND_STR=$(date | md5sum | cut -d" " -f1)

## This VARIABLES are exported because of
## nfupdater commad. This command needs some of them
## Don't panic, this env vars are temparary & will no longer exist if
## you re-open the Terminal
## ;-)

# PROJECT DIR
export PROJECT_DIR=$HOME/oi24/nfcollector

# USER ID
export USER_ID=$(id -u)

# Listen address
export NFC_LISTEN_ADDRESS="0.0.0.0"

# total number of used cpu
export NFC_CPU_NUM="0"

export NFC_LISTEN_PORT="6859"
export NFC_INFLUXDB_HOST="influxdb"
export NFC_INFLUXDB_PORT="8086"
export NFC_INFLUXDB_TOKEN="5vqt0q0b4g_lZwNgp7-8GgPq5Nxf3YY37xbVZP_ypeK_G3dwdNlTrAkcKN_Q6QzbmG-Th96lT_65Kp0j2UD1HA=="
export NFC_INFLUXDB_BUCKET="nfCollector"
export NFC_INFLUXDB_ORG="OPENINTELLIGENCE"
export NFC_IP_REPTATION_IPSUM="$PROJECT_DIR/vendors/ipsum/ipsum.txt"
# added in v0.0.1-30b for replacing config in dockerize deployment automaticaly
export REPLACING_NFC_IP_REPTATION_IPSUM="/opt/nfcollector/vendors/ipsum/ipsum.txt"

export NFC_IP2L_ASN="$PROJECT_DIR/vendors/ip2location/db/IP2LOCATION-LITE-ASN.IPV6.CSV/IP2LOCATION-LITE-ASN.IPV6.CSV"
# added in v0.0.1-30b for replacing config in dockerize deployment automaticaly
export REPLACING_NFC_IP2L_ASN="/opt/nfcollector/vendors/ip2location/db/IP2LOCATION-LITE-ASN.IPV6.CSV/IP2LOCATION-LITE-ASN.IPV6.CSV"

export NFC_IP2L_IP="$PROJECT_DIR/vendors/ip2location/db/IP2LOCATION-LITE-DB11.IPV6.BIN/IP2LOCATION-LITE-DB11.IPV6.BIN"
# added in v0.0.1-30b for replacing config in dockerize deployment automaticaly
export REPLACING_NFC_IP2L_IP="/opt/nfcollector/vendors/ip2location/db/IP2LOCATION-LITE-DB11.IPV6.BIN/IP2LOCATION-LITE-DB11.IPV6.BIN"

export NFC_IP2L_PROXY="$PROJECT_DIR/vendors/ip2location/db/IP2PROXY-LITE-PX10.IPV6.CSV/IP2PROXY-LITE-PX10.IPV6.CSV"
# added in v0.0.1-30b for replacing config in dockerize deployment automaticaly
export REPLACING_NFC_IP2L_PROXY="/opt/nfcollector/vendors/ip2location/db/IP2PROXY-LITE-PX10.IPV6.CSV/IP2PROXY-LITE-PX10.IPV6.CSV"

export NFC_IP2L_LOCAL="$PROJECT_DIR/vendors/ip2location/local-db/local.csv"
# added in v0.0.1-30b for replacing config in dockerize deployment automaticaly
export REPLACING_NFC_IP2L_LOCAL="/opt/nfcollector/vendors/ip2location/local-db/local.csv"

# InfluxDB DIR
export INFLUX_DIR=$PROJECT_DIR/vendors/influxdb

# Grafana DIR
export GRAFANA_DIR=$PROJECT_DIR/vendors/grafana

# error check and stop on error
check_errors() {
    e=$?
    if [ "${e}" -ne "0" ]; then
        echo -e "${RED} [ERROR] Could not continue due to error. Check the above information to solve the issue".
        exit 1
    fi
}

# prepare needed directories & create if needed
echo ""
echo -e "${YELLOW} Creating needed directories...${NC}"

# project directory
mkdir -pv $PROJECT_DIR
check_errors

# config files
mkdir -pv $PROJECT_DIR/etc
check_errors

# bin
mkdir -pv $PROJECT_DIR/bin
check_errors

# vendors dir & files
mkdir -pv $PROJECT_DIR/vendors/ip2location
check_errors
mkdir -pv $PROJECT_DIR/vendors/ip2location/local-db
check_errors
mkdir -pv $PROJECT_DIR/vendors/ipsum
check_errors

# influxDB directory
mkdir -pv $INFLUX_DIR
check_errors

# grafana directory
mkdir -pv $GRAFANA_DIR
check_errors

echo -e "${GREEN}...done!${NC}"
